package AccesoDatos;

import Entidades.*;
import java.util.*;
import java.sql.*;

public class datDetalleDocumento {

    private static DetalleDocumento Construir(ResultSet tabla) throws Exception {
        DetalleDocumento nuevo = new DetalleDocumento();
        nuevo.setIdDocumento(tabla.getInt("IdDocumento"));
        //nuevo.setIdDetDocumento(tabla.getInt("IdDetalleDocumento"));
        nuevo.setIdProducto(tabla.getInt("IdArticulo"));
        nuevo.setCantidad(tabla.getInt("Cantidad"));
        nuevo.setPrecio(tabla.getDouble("Precio"));
        return nuevo;
    }

    public static int InsertarDetallePedido(DetalleDocumento objDetDoc) throws Exception {
        Connection cnn = Conexion.getConexion();
        try {
            //int IdDocumento = datDocumento.UltimoIdDocumento();
            //String Consulta = "INSERT INTO DetalleDocumento(IdDocumento, IdProducto, Cantidad, Precio) VALUES(?,?,?,?)";
            //PreparedStatement stm = cnn.prepareStatement(Consulta);
            //stm.setInt(1, IdDocumento);
            //stm.setInt(1, objDetDoc.getIdDocumento());
            //stm.setInt(2, objDetDoc.getIdProducto());
            //stm.setInt(3, objDetDoc.getCantidad());
            //stm.setDouble(4, objDetDoc.getPrecio());
            //int cont = stm.executeUpdate();
            //return cont;
            CallableStatement cstm = cnn.prepareCall("exec IngresarDetallePedido " + objDetDoc.getIdDocumento() + ", " + objDetDoc.getIdProducto() + ", " + objDetDoc.getCantidad() + ", " + objDetDoc.getPrecio() + "");
            int cont = cstm.executeUpdate();
            return cont;
        } catch (Exception e) {
            throw e;
        } finally {
            cnn.close();
        }
    }

    public static DetalleDocumento BuscarDocumento(int id) throws Exception {
        Connection cnn = Conexion.getConexion();
        try {
            DetalleDocumento objeto = new DetalleDocumento();
            Statement stm = cnn.createStatement();
            ResultSet tabla = stm.executeQuery("Select * from DetalleDocumento where IdDocumento=" + id);
            if (tabla.next()) {
                objeto = Construir(tabla);
                return objeto;
            } else {
                return null;
            }
        } catch (Exception e) {
            throw e;
        } finally {
            cnn.close();
        }
    }

    public static Vector<DetalleDocumento> ListaDetallePedidosxPedido(int IdPedido) throws Exception {
        Connection cnn = Conexion.getConexion();
        try {
            Vector<DetalleDocumento> lista = new Vector<DetalleDocumento>();
            Statement stm = cnn.createStatement();
            ResultSet tabla = stm.executeQuery("select * from DetalleDocumento dd inner join Documento d on dd.IdDocumento = d.IdDocumento where d.IdDocumento = " + IdPedido + "");
            while (tabla.next()) {
                lista.add(Construir(tabla));
            }
            return lista;
        } catch (Exception e) {
            throw e;
        } finally {
            cnn.close();
        }

    }
}